B::Bytecode - Perl compiler's bytecode backend

- NAME
- SYNOPSIS
- DESCRIPTION
- EXAMPLE
- OPTIONS
- KNOWN BUGS
- NOTICE
- AUTHORS

# NAME

B::Bytecode - Perl compiler's bytecode backend

# SYNOPSIS

perl -MO=Bytecode[,-H][,-o script.plc] script.pl

# DESCRIPTION

Compiles a Perl script into a bytecode format that could be loaded later by the ByteLoader module and executed as a regular Perl script.

# EXAMPLE

        $ perl -MO=Bytecode,-H,-ohi -e 'print "hi!\n"'
        $ perl hi
        hi!

# OPTIONS

-b

  Save all the BEGIN blocks. Normally only BEGIN blocks that `require` other files (ex. `use Foo;`) are saved.

-H

  prepend a `use ByteLoader VERSION;` line to the produced bytecode.

-k

  keep the syntax tree - it is stripped by default.

-o outfile

  put the bytecode in <outfile> instead of dumping it to STDOUT.

-s

  scan the script for `# line ..` directives and for <goto LABEL> expressions. When gotos are found keep the syntax tree.

# KNOWN BUGS

- `BEGIN { goto A: while 1; A: }` won't even compile.

- `?...?` and `reset` do not work as expected.

- variables in `(?{ ... })` constructs are not properly scoped.

- scripts that use source filters will fail miserably.

# NOTICE

There are also undocumented bugs and options.

THIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK.

# AUTHORS

Originally written by Malcolm Beattie <mbeattie@sable.ox.ac.uk> and modified by Benjamin Stuhl <sho_pi@hotmail.com>.

Rewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d.

B::Bytecode - Perl compiler's bytecode backend